import textHtml from 'ngtemplate!html!../../../tpls/validation/text.html';
import dialogHtml from 'ngtemplate!html!../../../tpls/dialog/success.dialog.html';
import footerHtml from 'ngtemplate!html!../../../tpls/common/footer.html';

class RaceCreateController {
    constructor($rootScope, $scope, $cookieStore, $timeout, $state, ngDialog, dialogService, RaceService, fileReader, iRunner){

    	var vm = this;

    	vm.$rootScope    = $rootScope;
    	vm.$cookieStore  = $cookieStore;
    	vm.$timeout 	 = $timeout;
    	vm.$state   	 = $state;
    	vm.ngDialog 	 = ngDialog;
    	vm.dialogService = dialogService;
    	vm.RaceService   = RaceService;
    	vm.fileReader    = fileReader;
    	vm.iRunner 	     = iRunner;

    	vm.textHtml = textHtml;
    	$rootScope.footerHtml = footerHtml;

        // 预览
        vm.preview = () => {
            vm.ngDialog.open({
                template: '<img src="./images/preview.jpg" alt="" class="img-responsive" />',
                className: 'ngdialog-theme-default ngdialog-alert ngdialog-success',
                plain: true
            });
        }
        
    	// 赛事状态列表
        vm.race_status_list = iRunner.raceStatusConfig;

        // 获取省市区列表数据
        vm.RaceService.getDistrict()
        .then(function(data) {
            if (data.code==0) {
                vm.province = data.data;
            }
            console.log(data)
        }, function(data) {
            console.log('error')
        });

        // 根据省ID获取当前城市列表数据
        vm.onChangeProvince = function(search) {
            vm.RaceService.getDistrict(search.id)
            .then(function(data) {
                if (data.code==0) {
                    vm.cities = data.data;
                }
                console.log(data)
                console.log(search.id)
            }, function(data) {
                console.log('error')
            });
        }

        // 根据城市ID获取当前街道列表数据
        vm.onChangeCity = function(search) {
            vm.RaceService.getDistrict(search.id)
            .then(function(data) {
                if (data.code==0) {
                    vm.district = data.data;
                }
                console.log(data)
                console.log(search.id)
            }, function(data) {
                console.log('error')
            });
        }

        // 表单数据初始化
        vm.race = {
            race_short_name: '',
            race_name: '',
            race_event_date: '',
            race_start_time: '',
            race_province: '',
            race_city: '',
            race_district: '',
            race_address: '',
            race_logo: '',
            race_show: true,
            live_show: false,
            search_result_show: false,
            status: vm.race_status_list[0]
        }

        // 监听日期变化
        $scope.$watch(angular.bind(vm, () => vm.race.race_event_date), (newValue, oldValue) => {
            if (newValue) {
                angular.element(document.getElementsByName('raceDate')).removeAttr("style")
            }
        });

        // 监听时间变化
        $scope.$watch(angular.bind(vm, () => vm.race.race_start_time), (newValue, oldValue) => {
            if (newValue) {
                angular.element(document.getElementsByName('raceTime')).removeAttr("style")
            }
        });

        // 表单提交
        vm.submitForm = function(isValid) {

            // 验证失败, 提示用户
            if (!isValid) {

                if (!vm.race.race_short_name) {
                    $.blink(angular.element(document.getElementsByName('raceShortName')), 5, 100)
                } else if (!vm.race.race_name) {
                    $.blink(angular.element(document.getElementsByName('raceName')), 5, 100)
                } else if (!vm.race.race_event_date) {
                    $.blink(angular.element(document.getElementsByName('raceDate')), 5, 100)
                } else if (!vm.race.race_start_time) {
                    $.blink(angular.element(document.getElementsByName('raceTime')), 5, 100)
                }

            }

            // 验证通过
            if (isValid) {

                // 背景图片没有上传的场合
                if (!vm.myFile2) {
                    vm.dialogService.error("请添加赛事背景图片");
                    return;
                } else if (!vm.myFile) {
                    vm.dialogService.error("请添加赛事logo");
                    return;
                }

                // 拼接POST数据格式
                var params = {
                    short_name: vm.race.race_short_name,
                    disp_name: vm.race.race_name,
                    start_time: moment(vm.race.race_event_date).format('YYYY-MM-DD') + ' ' + moment(vm.race.race_start_time).format('HH:mm:ss'),
                    end_time: moment(vm.race.race_end_date).format('YYYY-MM-DD') + ' ' + moment(vm.race.race_end_time).format('HH:mm:ss'),
                    province: vm.race.race_province?vm.race.race_province.id:'0',
                    city: vm.race.race_city?vm.race.race_city.id:'0',
                    area: vm.race.race_district?vm.race.race_district.id:'0',
                    bg: vm.myFile2,
                    logo: vm.myFile,
                    race_show: vm.race.race_show ? 'yes' : 'no',
                    live_show: vm.race.race_show && vm.race.live_show ? 'yes' : 'no',
                    search_result_show: vm.race.race_show && vm.race.search_result_show ? 'yes' : 'no'
                }

                // 比赛结束时间要大于比赛开始时间
                if (params.start_time > params.end_time) {
                    vm.dialogService.error("比赛结束时间要大于比赛开始时间");
                    return false;
                }

                // console.log(params.start_time);
                // var start_time = Date.UTC(parseInt(params.start_time.substr(0, 4)), parseInt(params.start_time.substr(5, 7)) - 1, parseInt(params.start_time.substr(8, 10)), parseInt(params.start_time.substr(11, 13)), parseInt(params.start_time.substr(14, 16)), parseInt(params.start_time.substr(17, 19)))
                // var end_time = Date.UTC(parseInt(params.end_time.substr(0, 4)), parseInt(params.end_time.substr(5, 7)) - 1, parseInt(params.end_time.substr(8, 10)), parseInt(params.end_time.substr(11, 13)), parseInt(params.end_time.substr(14, 16)), parseInt(params.end_time.substr(17, 19)))
                // console.log(params);
                //调用123接口（视频）--创建赛事
                // TODO
                var baseurl = "http://www.123yd.cn/xingjiansport/V2/XiaoAi/createRace?name=" + params.disp_name + "&location=" + params.province + "_" + params.city + "&starttime=" + params.start_time + "&endtime=" + params.end_time;
                $.get(baseurl, {}, function (data2) {

                    if (data2.errorcode == 0) {

                        console.log("创建赛事成功（123）--" + data2.result.id + "--" + params.start_time + "----" + params.end_time);

                        params.related_id = data2.result.id;
                        //调用123视频接口成功返回有效信息的场合
                        // 创建赛事
                        vm.RaceService.postRaceCreate(params, vm.$cookieStore.get('access_token'), vm.$state.params.company_id)
                        .then(function(data) {

                            // 成功调用
                            if (data.code==0) {

                                // 模态框提示文本
                                $scope.text = '创建成功';

                                // 提示用户成功调用
                                vm.ngDialog.open({
                                    template: dialogHtml,
                                    className: 'ngdialog-theme-default ngdialog-alert ngdialog-success',
                                    scope: $scope
                                });

                                // 延迟1.5秒后, 关闭模态框并跳转路由至新建赛事主页面
                                vm.$timeout(function() {
                                    vm.ngDialog.close();
                                    vm.$state.go('dashboard.race.index', {company_id: vm.$state.params.company_id, race_id: data.data.race_id})
                                }, 1500)
                            }

                            // 调用失败, 提示用户
                            (data.code!=0&&data.code!=-1001)&&vm.dialogService.error(data.message);

                            // 登录信息已过期, 请重新登录
                            data.code==-1001&&vm.dialogService.error(data.message, true);

                            console.log(data)
                        }, function(data) {
                            console.log('error')
                        });

                    } else {
                        // 报错（123返回错误）
                        vm.dialogService.error(data2.errormsg);
                    }
                }, 'json');

            }
            
            return false;
        }

        // 获取上传图片的地址url，用以实现预览图片
        vm.getFile = function () {
            vm.fileReader.readAsDataUrl($scope.file, $scope)
            .then(function(result) {
                console.log($scope.file)

                //判断附件是否为图片
                if(!/image\/\w+/.test($scope.file.type)){
                    vm.dialogService.error('图片类型必须是.gif,jpeg,jpg,png中的一种哦');
                    return false;
                } else {
                    vm.imageSrc = result;
                }
                
            }, function(data) {
                console.log('error')
            });
        }

        // 获取上传图片的地址url，用以实现预览图片
        vm.getFile2 = function () {
            vm.fileReader.readAsDataUrl($scope.file, $scope)
            .then(function(result) {
                console.log($scope.file)

                //判断附件是否为图片
                if(!/image\/\w+/.test($scope.file.type)){
                    vm.dialogService.error('图片类型必须是.gif,jpeg,jpg,png中的一种哦');
                    return false;
                } else {
                    vm.imageSrc2 = result;
                }
                
            }, function(data) {
                console.log('error')
            });
        }

    }
}

RaceCreateController.$inject = ['$rootScope', '$scope', '$cookieStore', '$timeout', '$state', 'ngDialog', 'dialogService', 'RaceService', 'fileReader', 'iRunner']; 

export default RaceCreateController;